const mongoose = require('mongoose');
const DB_URL = 'mongodb://127.0.0.1:27017';
// 连接数据库
mongoose.connect(DB_URL);
// 连接成功
mongoose.connection.on('connected', function() {
	console.log('MongoDB 连接成功');
});
// 连接失败
mongoose.connection.on('error', function() {
	console.log('MongoDB 连接失败');
});

// 数据模型
const models = {
	// 用户信息
	user: {
		user_id: {type: String, require: true},    // 用户ID 主键
		user_name: {type: String, require: true},    // 用户名
		user_pwd: {type: String, require: true},    // 用户密码
		user_email: {type: String, require: true},    // 用户EMAIL地址
		user_type: {type: Number, require: true, default: 0},    // 用户类型  0表示普通用户  1表示管理员
		user_sex: {type: String},    // 用户性别
		user_age: {type: String},    // 用户年龄
		user_phone: {type: String},    // 用户手机号码
		user_weixin: {type: String},    // 用户微信号码
		user_qq: {type: String},    // 用户QQ号码
		user_address: {type: String},    // 用户地址
		user_last_login_ip: {type: String},    // 用户上一次登录IP地址
		user_lock: {type: Boolean},    // 是否锁定，false为不锁定，true为锁定
		user_freeze: {type: Boolean},    // 是否冻结，false为不冻结，true为冻结
		user_power: {type: String},    // 拥有权限 root / admin / general
		user_description: {type: String},    // 自我描述
		user_image_url: {type: String},    // 用户头像存储路径
		user_school: {type: String},    // 毕业学校
		user_company: {type: String},    // 公司
		user_post: {type: String},    // 职位
		user_register_time: {type: Date},    // 用户注册时间
		user_register_ip: {type: String},    // 用户注册时IP地址
		user_last_update_time: {type: Date},    // 用户上次更新博客时间
		user_weibo: {type: String},    // 用户微博
		user_github: {type: String},    // 用户GitHub
		user_home: {type: String},    // 用户个人主页
	},
	// 关注用户
	user_attention: {
		a_id: {type: String},    // 自增ID
		user_id: {type: String},    // 户ID
		attention_id: {type: String}    // 关注ID
	},
	// 私信
	secret_message: {
		secret_id: {type: String},     // 自增私信ID
		send_id: {type: String},     // 发信者ID
		receive_id: {type: String},     // 收信者ID
		message_topic: {type: String},     // 私信标题
		message_content: {type: String}     // 私信内容
	},
	// 系统通知列表
	system_message:{
		system_id: {type: String},    //系统通知ID
		send_id: {type: String},    //接受者ID
		send_default: {type: String},    //1时发送所有用户，0时则不采用
		system_topic: {type: String},    //通知主题
		system_content: {type: String}    //通知内容
	},
	// 文章内容
	article: {
		article_id: {type: String},     // 文章自增ID号
		user_id: {type: String},     // 所属用户ID
		article_title: {type: String},    // 文章标题
		article_keyword: {type: String},    // 文章关键字
		article_description: {type: String},    // 文章描述
		article_content: {type: String},     // 文章内容
		article_time: {type: Date, default: new Date()},     // 发布时间
		article_ip: {type: String},     // 发布IP
		article_click: {type: String},     // 查看人数
		sort_article_id: {type: String},     // 所属分类
		article_up: {type: Boolean},     // 是否置顶:false为否，true为是
		article_support: {type: Boolean}     // 是否博主推荐:false为否，true为是
	},
	// 文章分类
	article_sort: {
		sort_article_id: {type: String},     // 文章自增ID
		user_id: {type: String},     // 该分类所属用户
		sort_article_name: {type: String}     // 分类名称
	},
	// 评论
	comment: {
		c_id: {type: String},    // 评论自增ID号
		user_id: {type: String},    // 收到评论的用户ID
		commit_id: {type: String},    // 评论内容的ID
		commit_content: {type: String},    // 评论内容 
		commit_user_id: {type: String},    // 评论者ID
		commit_time: {type: Date, default: new Date()},    // 评论时间
		commit_ip: {type: String}   // 评论时的IP地址
	}

};

// 批量动态生成数据模型
for(let m in models) {
	mongoose.model(m, new mongoose.Schema(models[m]));
}

module.exports = {
	getModel: function(name) {
		return mongoose.model(name);
	}
};